package aop.aopXMl;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

/**
 * @author： pang-yun
 * @date： 2021-12-02 10:21
 * 功能目的 ：用于 要增强的类
 */
@Component
@Aspect   // 生成代理对象
public class SoliderAspect {

    //对相同的切入点 进行抽取   其他方法只要调用 point() 即可
    @Pointcut(value = "execution(* aop.aopXMl.Solider.battle(..))")
    public void point(){}

    @After(value = "point()")
    public void after(){
        System.out.println("战斗之后");
    }

    // @Before 注解表示 前置通知
    @Before(value = "execution(* aop.aopXMl.Solider.battle(..))")
    public void before(){
        System.out.println("战斗准备");
    }
    // 环绕通知
    @Around(value = "execution(* aop.aopXMl.Solider.battle(..))")
    public void around(ProceedingJoinPoint point) throws Throwable {
        System.out.println("环绕前");
        //被增强方法的执行
        point.proceed();
        System.out.println("环绕后");
    }


}
